17648
1392
Den här frågan har redan svar här:
Omvänd en sträng i Python
(29 svar)
Stängt för 4 år sedan.
Jag försöker vända en sträng och använder koden nedan men det resulterande omvända listvärdet är inget.
Koden:
str_a = 'Detta är rörande'
rev_word = str_a.split ()
rev_word = rev_word.reverse ()
rev_word = ''. gå med (rev_word)
Den returnerar TypeError. Varför? 
.reverse () returnerar Ingen. Därför bör du inte tilldela den till en variabel.
Använd detta istället:
stra = 'Detta är en sträng'
revword = stra.split ()
revword.reverse ()
revword = ''. gå med (revword)
Jag har kört koden på IDEOne åt dig så att du kan se utdata. (Observera också att utgången är stringaisThis; du kanske vill använda '' .join (revword), med ett mellanslag istället.)
Observera också att metoden du har angett bara vänder på orden, inte texten. @ ron.rothman tillhandahöll en länk som beskriver hur man vänder en sträng i sin helhet.
|
Detta är mitt personliga favorit sätt att vända en sträng:
stra = "Detta är en sträng"
revword = stra [:: - 1]
print (revword) # "gnirts a si sihT
eller, om du vill vända ordordningen:
revword = "" .join (stra.split () [:: - 1])
skriv ut (revword) # "sträng a är detta"
:)
|
Olika reverseringar på en sträng:
instring = 'Detta är en sträng'
reversedstring = instring [:: - 1]
tryck omvänd sträng # gnirts a si sihT
wordsreversed = ''. gå med (ord [:: - 1] för ord i instring.split ())
skriv ut ordåterförda # sihT si a gnirts
revwordorder = '' .join (ord för ord i instring.split () [:: - 1])
skriv ut revwordorder # string a är This
revwordandorder = ''. gå med (ord [:: - 1] för ord i instring.split () [:: - 1])
skriv ut ordordorder # gnirts a si siT
|
För framtida referens när ett objekt har en metod som [] .reverse () utför den i allmänhet den åtgärden på objektet (dvs. listan är sorterad och returnerar ingenting, inget) i motsats till inbyggda funktioner som sorterade som utför en åtgärd på ett objekt och returnerar ett värde (dvs. den sorterade listan)
|
>>> s = 'detta är en sträng'
>>> s [:: - 1]
'gnirts a si siht'
>>> ''. gå med (omvänd (ar))
'gnirts a si siht'
|
For-slingan itererar strängen från slut (sista bokstaven) till start (första bokstaven)
>>> s = 'Du kan också prova det här:]'
>>> rev = ''
>>> för i inom intervallet (len (s) - 1, -1, -1):
... rev + = s [i]
>>> rev
']: oot siht yrt nac uoY'
|
Baserat på kommentarer och andra svar:
str_a = 'detta är en sträng'
rev_word = ''. gå med (omvänd (str_a.split ()))
Metodkedjning fungerar trots allt i Python ...
|
Listomvändning kan göras på mer än ett sätt. Som nämnts i tidigare svar är två mycket framträdande, en med omvänd () -funktion och två med skärningsfunktion. Jag ger några insikter om vilken vi ska föredra.
Vi bör alltid använda reverse () -funktionen för att vända om en Python-lista. Två skäl, en på plats vändning och två snabbare än andra.
Jag har några siffror som stöder mitt svar,
I [15]: len (l)
Ut [15]: 1000
I [16]:% timeit -n1 l.reverse ()
1 slingor, bäst av 3: 7,87 µs per slinga
I [17]:% timeit -n1 l [:: - 1]
1 slingor, bäst av 3: 10 µs per slinga
För 1000-heltalslistan fungerade reverse () -funktionen bättre jämfört med skivning.
|
Inte svaret du letar efter? Bläddra bland andra frågor taggade python eller ställ din egen fråga.